/**
 * Copyright 2005 The Apache Software Foundation
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.edi.runtime.component
{
	import mx.managers.PopUpManager;
	import flash.display.DisplayObject;
	import mx.core.IFlexDisplayObject;
	import mx.core.Singleton;
	import mx.core.Application;
	
	/**
	 * 窗体弹出控制器 
	 * 
	 */	
	public class EDIPopUpManager
	{
		/**
		 * 使位于调用 createPopUp() 或 addPopUp() 方法期间使用的任何窗口上面的弹出窗口居中显示。
		 * @param popUp
		 * 
		 */		
		public static function centerPopUp(popUp:IFlexDisplayObject):void
		{
		 	PopUpManager.centerPopUp(popUp);
		}
		
		/**
		 * 删除由 createPopUp() 或 addPopUp() 方法弹出的弹出窗口。
		 * @param popUp
		 * 
		 */		
		public static function removePopUp(popUp:IFlexDisplayObject):void
		{
			EDIApplication.rstoreHtmlPlanVisible(true,popUp);
			PopUpManager.removePopUp(popUp);
		}	
		
		/**
		 * 请确保弹出窗口高于其子项列表中的其它对象。如果该弹出窗口是顶级窗口并且位于鼠标下，则 SystemManager 会自动将其设置为满足此要求；否则，您必须自行处理。 
		 * @param popUp
		 * 
		 */		  
		public static function bringToFront(popUp:IFlexDisplayObject):void
		{
			PopUpManager.bringToFront(popUp);
		}
		
		/**
		 *  弹出顶级窗口
		 * @param window 要弹出的 IFlexDisplayObject
		 * @param parent DisplayObject，用于确定要使用 SystemManager 的哪些层，以及（可选）确定居中新的顶级窗口所用的参考点。它可能并非弹出窗口的实际父项，因为所有弹出窗口都以 SystemManager 为父项
		 * @param modal  (default = false) — 如果为 true，则该窗口为模态窗口，也就是说在删除该窗口之前，用户将无法与其它弹出窗口交互。
		 * @param childList — 要将弹出窗口添加到其中的子项列表。PopUpManagerChildList.APPLICATION
		 * 
		 */		  
		public static function addPopUp(window:IFlexDisplayObject,
		            parent:DisplayObject,
		            modal:Boolean = false,
		            childList:String = null):void
		{
			if(parent==null)
			{
				 parent = DisplayObject(Application.application); 
				 window.x=parent.width/2-window.width/2;
				 window.y=parent.height/2-window.height/2; 
			}
			EDIApplication.setHtmlPlanVisible(false,window);
			PopUpManager.addPopUp(window, parent, modal, childList);
		}
		
		/**
		 * 创建一个顶级窗口，并按 z 轴顺序将其置于其它窗口上方 
		 * @param parent 用于确定要使用 SystemManager 的哪些层，以及（可选）确定居中新的顶级窗口所用的参考点。它可能并非弹出窗口的实际父项，因为所有弹出窗口都以 SystemManager 为父项。 
		 * @param className 要为弹出窗口创建的对象的类。该类必须实现 IFlexDisplayObject。 
		 * @param modal 如果为 true，则该窗口为模态窗口，也就是说在删除该窗口之前，用户将无法与其它弹出窗口交互。 
		 * @param childList  要将弹出窗口添加到的子项列表。PopUpManagerChildList.APPLICATION、PopUpManagerChildList.POPUP 或 PopUpManagerChildList.PARENT（默认）中的任意一项。 
		 * @return 
		 * 
		 */		 
		public static function createPopUp(parent:DisplayObject,
		                               className:Class,
		                               modal:Boolean = false,
		                               childList:String = null):IFlexDisplayObject
		{   
			return PopUpManager.createPopUp(parent, className, modal, childList);
		}                            
		
	}
}